/*
 * @Description: 
 * @version: 
 * @Author: cy
 * @Date: 2022-05-05 16:55:17
 * @LastEditors: cy
 * @LastEditTime: 2022-05-05 18:19:10
 */
/**
 * LeetCode 1 两数之和
 * 给定nums=[2,7,11,15],target=9
 * 因为nums[0]+nums[1]=2+7=9
 * 所以返回[0,1]
 * 解题步骤：
 * 1 新建一个字典作为婚姻介绍所
 * 2 nums里的值，逐个来介绍所找对象，没有合适的就先登记着，有合适的就牵手成功
 * 下面的解法，空间复杂度是O(n),这个算法空间复杂度比较高，之后学到二分查找再进行优化
 */
var twoSum = function(nums, target) {
    const map = new Map();
    for (let i = 0; i < nums.length; i += 1) {
        const n = nums[i];
        const n2 = target - n;
        if (map.has(n2)) {
            return [map.get(n2), i];
        } else {
            map.set(n, i);
        }
    }
}
